{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Showcase"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import skia\n",
    "import contextlib\n",
    "from IPython.display import display, Image\n",
    "\n",
    "@contextlib.contextmanager\n",
    "def draw_target():\n",
    "    surface = skia.Surface(256, 256)\n",
    "    with surface as canvas:\n",
    "        yield canvas\n",
    "    image = surface.makeImageSnapshot()\n",
    "    display(Image(data=image.encodeToData()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Shapes"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with draw_target() as canvas:\n",
    "    canvas.drawColor(skia.ColorWHITE)\n",
    "    \n",
    "    paint = skia.Paint(\n",
    "        Style=skia.Paint.kFill_Style,\n",
    "        AntiAlias=True,\n",
    "        StrokeWidth=4,\n",
    "        Color=0xFF4285F4)\n",
    "    \n",
    "    rect = skia.Rect.MakeXYWH(10, 10, 100, 160)\n",
    "    canvas.drawRect(rect, paint)\n",
    "    \n",
    "    oval = skia.RRect()\n",
    "    oval.setOval(rect)\n",
    "    oval.offset(40, 80)\n",
    "    paint.setColor(0xFFDB4437)\n",
    "    canvas.drawRRect(oval, paint)\n",
    "    \n",
    "    paint.setColor(0xFF0F9D58)\n",
    "    canvas.drawCircle(180, 50, 25, paint)\n",
    "    \n",
    "    rect.offset(80, 50)\n",
    "    paint.setColor(0xFFF4B400)\n",
    "    paint.setStyle(skia.Paint.kStroke_Style)\n",
    "    canvas.drawRoundRect(rect, 10, 10, paint)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Bézier Curves"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with draw_target() as canvas:\n",
    "    canvas.drawColor(skia.ColorWHITE)\n",
    "    \n",
    "    paint = skia.Paint(\n",
    "        Style=skia.Paint.kStroke_Style,\n",
    "        StrokeWidth=8,\n",
    "        Color=0xFF4285F4,\n",
    "        AntiAlias=True,\n",
    "        StrokeCap=skia.Paint.kRound_Cap)\n",
    "    \n",
    "    path = skia.Path()\n",
    "    path.moveTo(10, 10)\n",
    "    path.quadTo(256, 64, 128, 128)\n",
    "    path.quadTo(10, 192, 250, 250)\n",
    "    canvas.drawPath(path, paint)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Translations and Rotations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with draw_target() as canvas:\n",
    "    canvas.translate(128, 0)\n",
    "    canvas.rotate(60)\n",
    "    rect = skia.Rect.MakeXYWH(0, 0, 200, 100)\n",
    "\n",
    "    paint = skia.Paint(AntiAlias=True, Color=0xFF4285F4)\n",
    "    canvas.drawRect(rect, paint)\n",
    "\n",
    "    canvas.rotate(20)\n",
    "    paint.setColor(0xFFDB4437)\n",
    "    canvas.drawRect(rect, paint)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Text rendering"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with draw_target() as canvas:\n",
    "    typeface = skia.Typeface('Arial')\n",
    "\n",
    "    font1 = skia.Font(typeface, 64.0, 1.0, 0.0)\n",
    "    font2 = skia.Font(typeface, 64.0, 1.5, 0.0)\n",
    "    font1.setEdging(skia.Font.Edging.kAntiAlias)\n",
    "    font2.setEdging(skia.Font.Edging.kAntiAlias)\n",
    "\n",
    "    blob1 = skia.TextBlob.MakeFromString('Skia', font1)\n",
    "    blob2 = skia.TextBlob.MakeFromString('Skia', font2)\n",
    "\n",
    "    paint1 = skia.Paint(\n",
    "        AntiAlias=True,\n",
    "        Color=skia.Color(0x42, 0x85, 0xF4))\n",
    "\n",
    "    paint2 = skia.Paint(\n",
    "        AntiAlias=True,\n",
    "        Color=skia.Color(0xDB, 0x44, 0x37),\n",
    "        Style=skia.Paint.kStroke_Style,\n",
    "        StrokeWidth=3.0)\n",
    "\n",
    "    paint3 = skia.Paint(\n",
    "        AntiAlias=True,\n",
    "        Color=skia.Color(0x0F, 0x9D, 0x58))\n",
    "\n",
    "    canvas.clear(skia.ColorWHITE)\n",
    "    canvas.drawTextBlob(blob1, 20.0, 64.0, paint1)\n",
    "    canvas.drawTextBlob(blob1, 20.0, 144.0, paint2)\n",
    "    canvas.drawTextBlob(blob2, 20.0, 224.0, paint3)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Discrete Path Effects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "def star():\n",
    "    from math import cos, sin\n",
    "    R = 115.2\n",
    "    C = 128.0\n",
    "    path = skia.Path()\n",
    "    path.moveTo(C + R, C)\n",
    "    for i in range(1, 8):\n",
    "        a = 2.6927937 * i\n",
    "        path.lineTo(C + R * cos(a), C + R * sin(a))\n",
    "    return path\n",
    "        \n",
    "        \n",
    "with draw_target() as canvas:\n",
    "    paint = skia.Paint(\n",
    "        PathEffect=skia.DiscretePathEffect.Make(10.0, 4.0),\n",
    "        Style=skia.Paint.kStroke_Style,\n",
    "        StrokeWidth=2.0,\n",
    "        AntiAlias=True,\n",
    "        Color=0xFF4285F4)\n",
    "    canvas.clear(skia.ColorWHITE)\n",
    "    path = star()\n",
    "    canvas.drawPath(path, paint)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Composed Path Effects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with draw_target() as canvas:\n",
    "    paint = skia.Paint(\n",
    "        PathEffect=skia.PathEffect.MakeCompose(\n",
    "            skia.DashPathEffect.Make([10.0, 5.0, 2.0, 5.0], 0.0),\n",
    "            skia.DiscretePathEffect.Make(10.0, 4.0)),\n",
    "        Style=skia.Paint.kStroke_Style,\n",
    "        StrokeWidth=2.0,\n",
    "        AntiAlias=True,\n",
    "        Color=0xFF4285F4)\n",
    "    canvas.clear(skia.ColorWHITE)\n",
    "    path = star()\n",
    "    canvas.drawPath(path, paint)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Sum Path Effects"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with draw_target() as canvas:\n",
    "    paint = skia.Paint(\n",
    "        PathEffect=skia.PathEffect.MakeSum(\n",
    "            skia.DiscretePathEffect.Make(10.0, 4.0),\n",
    "            skia.DiscretePathEffect.Make(10.0, 4.0, 1245)),\n",
    "        Style=skia.Paint.kStroke_Style,\n",
    "        StrokeWidth=2.0,\n",
    "        AntiAlias=True,\n",
    "        Color=0xFF4285F4)\n",
    "    canvas.clear(skia.ColorWHITE)\n",
    "    path = star()\n",
    "    canvas.drawPath(path, paint)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Shaders"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "with draw_target() as canvas:\n",
    "    paint = skia.Paint(\n",
    "        PathEffect=skia.DiscretePathEffect.Make(10.0, 4.0),\n",
    "        Shader=skia.GradientShader.MakeLinear(\n",
    "            [(0, 0), (256, 256)],\n",
    "            [skia.Color(66, 133, 244), skia.Color(15, 157, 88)]),\n",
    "        AntiAlias=True)\n",
    "    canvas.clear(skia.ColorWHITE)\n",
    "    path = star()\n",
    "    canvas.drawPath(path, paint)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
